package com.itheima.request;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;

/**
 *request获取请求数据
 */
@WebServlet("/RequestDemo3")
public class RequestDemo3 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /**
         * 获取请求行数据
         */
        // String getMethod()：获取请求方式： GET
        String method = req.getMethod();
        System.out.println(method);
        // String getContextPath()：获取虚拟目录(项目访问路径)：/request-demo
        String contextPath = req.getContextPath();
        System.out.println(contextPath);
        // StringBuffer getRequestURL(): 获取URL(统一资源定位符)：http://localhost:8080/request-demo/req1
        //定位到当前servlet
        StringBuffer url = req.getRequestURL();
        System.out.println(url);
        // String getRequestURI()：获取URI(统一资源标识符)： /request-demo/req1
        //这个也是定位到当前servlet，从项目名开始定位
        String uri = req.getRequestURI();
        System.out.println(uri);
        // String getQueryString()：获取请求参数（GET方式）： username=zhangsan
        //获取请求参数（返回字符串）
        String queryString = req.getQueryString();
        System.out.println(queryString);

        /**
         * 获取请求头数据，请求体数据是以键值对形式存在的
         */
        //获取浏览器版本信息
        String agent = req.getHeader("user-agent");
        System.out.println(agent);
        //获取请求的主机名,这里获取到的就是tomcat 的访问地址
        String host = req.getHeader("Host");//localhost:8080
        System.out.println(host);

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        /**
         * 获取请求体数据，请求体数据里面也是放着请求参数，要使用post请求
         */
        //创建一个html表单发送post请求

        //通过流的方式获取请求参数
        //对于字符我们采用字符流输入流
        BufferedReader reader = req.getReader();
        //每次读取一行数据
        String s = reader.readLine();
        System.out.println(s);

        //字符输入流会在req请求销毁的时候被关闭
    }
}
